package com.itrencai.d18_reflect_class.reflect_framework;

import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;

public class MybatisUtil {
    //保存任意类型的对象
    public static void save(Object obj) {
        try (  PrintStream ps = new PrintStream(new FileOutputStream("E:\\javalearn\\opp-app\\oop-app\\src\\data00.txt"), true);
        ){

            //1.提取这个对象的全部成员变量，只有反射可以解决
            Class c = obj.getClass();//c.getSimpleName()获取当前类名，c.getName获取权限名：包名+类名
            ps.println("============"+c.getSimpleName()+"===============");
            //2.提取全部成员变量
            Field[] fields = c.getDeclaredFields();
            //3.获取成员变量的信息
            for (Field field : fields) {
                String name = field.getName();
                //提取本成员变量在obj对象中的值（取值）
                field.setAccessible(true);//暴力反射，打开权限
                String value = field.get(obj) + "";
                ps.println(name+"="+value);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
